const fs = require('fs').promises;
const path = require('path');
const cron = require('node-cron');

// temp目录路径
const tempDir = path.join(__dirname, 'temp');

/**
 * 清理temp目录下的所有文件和子目录
 */
async function cleanupTempDirectory() {
  try {
    console.log('[定时任务] 开始清理临时文件目录:', new Date().toISOString());
    
    // 检查temp目录是否存在
    try {
      await fs.access(tempDir);
    } catch (err) {
      console.log('[定时任务] temp目录不存在，无需清理');
      return;
    }
    
    // 读取temp目录下的所有文件和文件夹
    const files = await fs.readdir(tempDir);
    
    if (files.length === 0) {
      console.log('[定时任务] temp目录为空，无需清理');
      return;
    }
    
    // 删除每个文件/文件夹
    for (const file of files) {
      const filePath = path.join(tempDir, file);
      try {
        await fs.rm(filePath, { recursive: true });
        console.log(`[定时任务] 已删除: ${filePath}`);
      } catch (err) {
        console.error(`[定时任务] 删除失败 ${filePath}:`, err.message);
      }
    }
    
    console.log('[定时任务] 临时文件清理完成');
  } catch (err) {
    console.error('[定时任务] 清理临时文件时出错:', err.message);
  }
}

/**
 * 启动定时任务
 * 每天凌晨(0点)、早上8点、中午12点、晚上9点执行
 */
function startCleanupSchedule() {
  // 每天凌晨0点执行
  cron.schedule('0 0 * * *', cleanupTempDirectory, {
    scheduled: true,
    timezone: "Asia/Shanghai"
  });
  
  // 每天早上8点执行
  cron.schedule('0 8 * * *', cleanupTempDirectory, {
    scheduled: true,
    timezone: "Asia/Shanghai"
  });
  
  // 每天中午12点执行
  cron.schedule('0 12 * * *', cleanupTempDirectory, {
    scheduled: true,
    timezone: "Asia/Shanghai"
  });
  
  // 每天晚上9点执行
  cron.schedule('0 21 * * *', cleanupTempDirectory, {
    scheduled: true,
    timezone: "Asia/Shanghai"
  });
  
  console.log('[定时任务] 已启动临时文件清理定时任务');
  console.log('[定时任务] 执行时间: 凌晨0点, 早上8点, 中午12点, 晚上9点');
}

module.exports = {
  cleanupTempDirectory,
  startCleanupSchedule
};

